'use strict';
const dayjs = require("dayjs");
const {getDefaultModelConfig} = require("../../utils/common");
const { formatDate } = require("../../utils/index");

module.exports = app => {
    const { STRING, INTEGER, DATE, TINYINT, TEXT } = app.Sequelize;
    return app.model.define(
        'HouseholdMove',
        {
            id: {type: INTEGER, primaryKey: true, autoIncrement: true},
            // 申请人信息
            applicant_name: STRING(50), // 申请人姓名
            applicant_gender: {type: STRING, defaultValue: '', comment: '申请人性别：男，女'}, // 申请人性别
            applicant_birth_date: {
                type: DATE,
                get() {
                    return formatDate(this.getDataValue('applicant_birth_date'), 'YYYY-MM-DD');
                }
            }, // 申请人出生日期

            // 迁移人信息
            move_person_name: STRING(50), // 迁移人姓名
            move_person_gender: {type: STRING, defaultValue: '', comment: '迁移人性别：男，女'}, // 迁移人性别
            move_person_birth_date: {
                type: DATE,
                get() {
                    return formatDate(this.getDataValue('move_person_birth_date'), 'YYYY-MM-DD');
                }
            }, // 迁移人出生日期
            move_person_id_card: STRING(18), // 迁移人身份证号码
            move_person_phone: STRING(11), // 迁移人联系电话

            // 地址信息
            move_out_address: TEXT, // 迁出地址
            move_in_address: TEXT, // 迁入地址
            move_in_location: STRING(200), // 迁入地

            // 关系和原因
            relationship: STRING(50), // 与申请人关系
            move_reason: TEXT, // 迁移原因

            status: {type: TINYINT, defaultValue: 0, comment: '审核状态：0-待审核，1-审核通过，2-审核拒绝'}, // 审核状态
            review_remark: TEXT, // 审核备注
            reviewer: STRING(50), // 审核人
            ...getDefaultModelConfig(app)
        },
        {
            tableName: 'household_move',
            timestamps: true,
            createdAt: 'create_time',
            updatedAt: 'update_time'
        }
    );
};
